#pragma once 

#include "Defines.h"
#include <string>
#include <irrlicht.h>

class WorldObject
{
	public:
		core::vector3df position; // public because of serialization
		int ID;
		core::matrix4 mat;
	private:
		core::aabbox3df boundingBox;
		unsigned int objectType;
		scene::IMeshSceneNode* node;
		
		std::string modelName;
		std::string textureName;
		
		bool isInTown;
		
	public:
		WorldObject();
		~WorldObject();

		void faceTarget(core::vector3df targetPos);
		core::vector3df getPosition();

		scene::IMeshSceneNode* getNode();
		unsigned int getObjectType();
		void setObjectType(unsigned int passedObjectType);
		void setPosition(core::vector3df newPosition);
		void setNode(scene::IMeshSceneNode* passedNode);

		const std::string& getTextureName();
		const std::string& getModelName();
		
		void setModelName(const std::string& passedName);
		void setTextureName(const std::string& passedName);

		bool getIsInTown();
		void setIsInTown(bool passedisInTown);

		void setMat(core::matrix4 passedMat);
		core::matrix4 getMat();

		const int getID();
		void setID(const int passedID);

		void setBoundingBox(core::aabbox3df passedBox);
		core::aabbox3df getBoundingBox();
};
